package net.qhzw.vip.qiyu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.qhzw.vip.qiyu.dto.CommunityDto;
import net.qhzw.vip.qiyu.dto.DispatchHistoryDto;
import net.qhzw.vip.qiyu.dto.MaintRptDto;
import net.qhzw.vip.qiyu.dto.MaintUserDto;
import net.qhzw.vip.qiyu.entity.MaintRpt;
import net.qhzw.vip.qiyu.param.MaintQuery;
import net.qhzw.vip.qiyu.result.PageResult;

import java.util.List;
import java.util.Map;

public interface MaintRptService extends IService<MaintRpt> {


    /**
     * 用户维修报案
     *
     * @param param
     * @return
     */
    boolean report(MaintRpt param);


    /***
     * 查询维修队列
     * @param userId
     * @return
     */
    List<MaintRpt> maintQueueList(Long userId);

    /***
     * 接单
     * @param id
     * @param userId
     * @return
     */
    boolean takeAnOrdrNow(Long id, Long userId);


    /**
     * 无法接单
     *
     * @param id
     * @param maintUserId
     * @return
     */
    boolean unableToTakeOrders(Long id, Long maintUserId);

    /***
     * 到达报修点
     * @param id
     * @return
     */
    boolean arrive(Long id);


    /***
     * 维修完成
     * @param id
     * @return
     */
    boolean repairDone(Long id, Long userId);


    /**
     * 服务评价
     *
     * @param parm
     * @return
     */
    boolean servCmt(Map<String, String> parm);

    /**
     * 查询用户是否有派单
     *
     * @param userId
     * @return
     */
    int maintCout(Long userId);


    /***
     * 查看用户报案信息
     * @param page
     * @return
     */
    PageResult<MaintRptDto> findUserReport(Page<MaintRptDto> page, Long userId, String maintRealName, String maintMobile);

    /***
     * 查看维修师傅信息
     * @param id
     * @return
     */
    MaintUserDto findMaintUserInfo(Long id);

    /**
     * 查看派单历史
     *
     * @param id
     * @return
     */
    List<DispatchHistoryDto> dispatchHistory(Long id);


    /**
     * 查看用户报案信息列表
     * @param page
     * @param query
     * @return
     */
    PageResult<MaintRptDto> findMaintenanceList(Page<MaintRptDto> page, MaintQuery query);


    /***
     * 查询附近站点
     * @param longitude
     * @param latitude
     * @param keywords
     * @return
     */
    List<CommunityDto> findNearbyCommunity(Page page, Double longitude, Double latitude, String keywords);

    Long findNearbyCommunityCount(String keywords);

    List<MaintRptDto> selectMaintenanceList();
}
